package movimiento.patrones;

import java.util.Random;
import juego.Escenario;
import auxiliares.Vector;
import movimiento.*;

/*
 * Patron usado por el avion guia enemigo. Elije un patron de movimiento al azar 
 * entre los disponibles y realiza una cantidad de movimientos con este. Luego, 
 * cambia a otro patron.
 */

public class Aleatorio extends PatronMovimiento {
	private PatronMovimiento patronActual;
	private int movimientosConPatronActual;
	private int movimientosConCadaPatron = 30;

	public Aleatorio() {
		super();
		this.patronActual = this.obtenerPatronAleatorio();
	}

	private PatronMovimiento obtenerPatronAleatorio() {
		Random rdm = new Random();
		int num = rdm.nextInt(4);

		switch (num) {
		case 0:
			return new IdasVueltas();
		case 1:
			return new Rastrear(Escenario.getInstance().getActor());
		case 2:
			return new Rectas();
		case 3:
			return new ZigZag();
		default:
			return new ZigZag();
		}
	}

	@Override
	public Posicion calcularNuevaPosicion(Posicion posicion, Vector velocidad) {
		if (movimientosConPatronActual >= this.movimientosConCadaPatron) {
			this.patronActual = this.obtenerPatronAleatorio();
			this.movimientosConPatronActual = 0;
		}

		this.movimientosConPatronActual += 1;
		return this.patronActual.calcularNuevaPosicion(posicion, velocidad);
	}

}
